/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"3998AA2E-F249-41C4-AE1F-E7132F93D998",variableType:4}
 */
var fTipoProveedor = null;

/**
 *
 * @properties={typeid:24,uuid:"76803CC8-1070-47F9-8EF9-4D7EEE5A9201"}
 */
function buscar()
{
	elements.tab_diario.removeAllTabs()
	if ((globals.gFechaDesde != null) && (globals.gFechaHasta != null))
	{
		var d1 = globals.gFechaDesde
		d1.setHours(00);
		d1.setMinutes(00);
		d1.setSeconds(00);
		d1.setMilliseconds(0)
		
		var d2 = globals.gFechaHasta
		d2.setHours(23);
		d2.setMinutes(59);
		d2.setSeconds(59);
		d2.setMilliseconds(996)
		
		var query = 'SELECT cc.fecha_presentacion, cc.cod_mov, cc.comprob_completo, cc.proveedor_id, p.cuit,p.tipo_iva_id, cc.neto_impresion, '+ 
						'coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 1 GROUP BY cv.ctacte_pr_id),0) as "exentos", '+
						'coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 2 GROUP BY cv.ctacte_pr_id),0) as "impuestos_internos", '+
						'cc.iva_impresion, cc.porc_impresion, '+ 
						'coalesce(cc.iva_percep_signo,0) + coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 6 GROUP BY cv.ctacte_pr_id),0) as "iva_percep", '+
						'coalesce(cc.ib_percep_signo,0) + coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 3 GROUP BY cv.ctacte_pr_id),0) as "ib_percep", '+
						'coalesce(cc.ganancias_percep_signo,0) + coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 4 GROUP BY cv.ctacte_pr_id),0) as "ganancias_percep", '+
						'coalesce(cc.neto_no_gravado_signo,0) + coalesce((SELECT SUM(cv.importe) FROM ctacte_pr_varios "cv" JOIN conceptos_varios_cc "cvcc" ON cvcc.concepto_varios_cc_id = cv.concepto_id WHERE cv.ctacte_pr_id = cc.ctacte_pr_id AND cvcc.columna_diario = 5 GROUP BY cv.ctacte_pr_id),0) as "otros", '+
						'cc.importe_signo as "total" '+
						'FROM ctacte_pr as "cc" '+
						'INNER JOIN proveedor as "p" ON cc.proveedor_id = p.proveedor_id '+
						'INNER JOIN tab_mov_pr as "tb" ON cc.cod_mov = tb.ctacte_mov_pr_id '+
						'WHERE tb.diario_compras = 1 and cc.userv_id = ? and cc.fecha_presentacion BETWEEN ? and ? '
		var args = [globals.gUservID,d1,d2]
		if (fTipoProveedor != null)
		{
			query += 'and p.tipo = ? '
			args.push(fTipoProveedor)
		}
		var $ds = databaseManager.getDataSetByQuery('infocom',query,args,-1)
		
		if ($ds.getMaxRowIndex() == 0)
		{
			globals.DIALOGS.showWarningDialog('Aviso','No se encontraron movimientos con esas condiciones','OK')
		}
		else
		{	
			calcularTotales($ds)
			var $nombre = 'diario_compras_conceptos_2'
			var $frm = solutionModel.getForm($nombre)
			var $tipos = [JSColumn.DATETIME, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER, JSColumn.TEXT, JSColumn.INTEGER, JSColumn.NUMBER,
			              JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.TEXT, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER, JSColumn.NUMBER]
			$frm.dataSource = $ds.createDataSource('DIARIO_CONCEPTOS',$tipos)
			globals.cambiarEstilo($nombre)
			forms[$nombre].controller.recreateUI()
			elements.tab_diario.addTab(forms[$nombre]);
			
			forms.diario_compras_ds_2_conceptos.queryTotales()
			forms[$nombre].elements.tab_concepto.addTab(forms.diario_compras_ds_2_conceptos)
			globals.cambiarEstilo('diario_compras_ds_2_conceptos')
			
			forms[$nombre].foundset.sort('fecha_presentacion asc, cod_mov asc, comprob_completo asc')
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','Por favor complete todos los datos','OK')
	}
	
/*	var $params = {
		userv: uservs_to_uservs.razon_social,
		pTitulo: 'Diario de Conceptos Desde ' + utils.dateFormat(globals.gFechaDesde,'dd-MM-yyyy') + ' Hasta ' + utils.dateFormat(globals.gFechaHasta,'dd-MM-yyyy'),
		pFechaDesde: globals.gFechaDesde,
		pFechaHasta: globals.gFechaHasta,
		pUservId: globals.gUservID
	}
	globals.metodoJasper('impresion','proveedores/diario_compras_conceptos.jasper','Diario_conceptos','infocom',$params)*/
}

/**
 *
 * @properties={typeid:24,uuid:"CE72CE92-AFA0-4740-945D-7461B2BF5095"}
 */
function iniciar() 
{
	databaseManager.revertEditedRecords();
	databaseManager.setAutoSave(true);
	globals.gFechaHasta = application.getServerTimeStamp()
	globals.gFechaDesde = globals.gFechaDesde.setDate (globals.gFechaHasta.getDate() - 30);
}

/**
 * Perform the element default action.
 *
 * @properties={typeid:24,uuid:"AC262FB2-99BF-4328-81E0-B626F6E02B54"}
 */
function imprimir(modo) {
	var $impresion 	= 'diario_compras_conceptos_imp'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_compras_conceptos_2'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	forms[$impresion].controller.recreateUI()
	forms[$impresion].foundset.sort('fecha_presentacion asc, cod_mov asc, comprob_completo asc')
	pasaTotales()
	if (modo == 'preview')
		forms[$impresion].controller.showPrintPreview(false)
	else
	{
		var type = application.getApplicationType();
		if (type == 5)
			forms[$impresion].controller.showPrintPreview(false)
		else
		{
			/** @type {Date}*/
			var fecha = application.getServerTimeStamp()
			fecha = utils.dateFormat(fecha,'dd-MM-yyyy HH:mm:ss')
			var arch = plugins.file.showFileSaveDialog( 'c:/'+gidformactual_to_forms.titulo + ' ' + fecha + '.pdf', 'Guardar archivo')
			if (arch)
			{
				forms[$impresion].controller.print(false,false,plugins.pdf_output.getPDFPrinter(arch.getAbsolutePath()));
				application.showURL('file:///' + arch.getAbsolutePath())
			}
		}
	}
}

/**
 * @properties={typeid:24,uuid:"DD86FE12-3F5D-4E56-8372-5D89C103411A"}
 */
function imprimir_preview()
{
	imprimir('preview')
}

/**
 * @properties={typeid:24,uuid:"80AA5E19-D66F-40AD-B0AC-F33BC3275AAE"}
 */
function imprimir_pdf()
{
	imprimir('pdf')
}

/**
 * @properties={typeid:24,uuid:"3137AC58-0534-4E28-B10C-201E8681288B"}
 */
function pasaTotales()
{
	var $orginial 	= 'diario_compras_conceptos_2'
	var $impresion	= 'diario_compras_conceptos_imp'
		
	var $vars		= solutionModel.getForm($impresion).getVariables()
	for (var i = 0 ; i < $vars.length ; i++)
	{
		forms[$impresion][$vars[i].name] = forms[$orginial][$vars[i].name]
	}
	
	$impresion 		= 'diario_compras_ds_conceptos'
	var $frm_imp	= solutionModel.getForm($impresion)
	var $consulta	= 'diario_compras_ds_2_conceptos'
	var $frm_cons	= solutionModel.getForm($consulta)
	
	$frm_imp.dataSource = $frm_cons.dataSource
	
	forms[$impresion].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"68E9C3D5-44B5-43C9-B1C9-E55A01930DEB"}
 */
function xls() {

	var $html 		= registros()
	var $totales 	= totales()
	/** @type {Date}*/
	var fecha = application.getServerTimeStamp()
	fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
	var jsFile = plugins.file.showFileSaveDialog( 'c:/diario_compras ' + fecha + '.xls' )
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
	
		bw.write($html,0,$html.length)
		bw.write($totales,0,$totales.length)
		bw.close()
		fw.close()
		//application.showURL('file:///'+ jsFile.getAbsolutePath())
		application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
	}
}

/**
 * @properties={typeid:24,uuid:"8E6378B7-4C78-4B98-B0F6-53A98C8D283D"}
 */
function registros()
{
	var $frm1 = 'diario_compras_conceptos_2'
	var elems = forms[$frm1].elements.allnames
	var $html = '<TABLE CELLPADDING="1" CELLSPACING="1" BORDER="0">'
	//COLUMNAS
	$html += '<TR class="text">'
	/**@type {Array<String>} */
	var titulos = new Array()
	for (var i = 0 ; i < elems.length ; i++)
	{
		if (elems[i].indexOf('tab_') == -1)
		{
			titulos.push(forms[$frm1].elements[elems[i]].titleText)
			$html += '<TD> '+ forms[$frm1].elements[elems[i]].titleText + '</TD>'
		}
	}
	
	$html += '</TR>'
	//REGISTROS
	var $cant = databaseManager.getFoundSetCount(forms.diario_compras_conceptos_2.foundset)
	for (var j = 1 ; j <= $cant ; j++)
	{
		forms.diario_compras_conceptos_2.controller.setSelectedIndex(j)
		$html += '<TR class="text">'
		for (var k = 0 ; k < elems.length ; k++)
		{
			if (elems[k].indexOf('tab_') == -1)
			{
				forms.diario_compras_conceptos_2.elements[elems[k]].requestFocus()
				forms.diario_compras_conceptos_2.elements[elems[k]].selectAll()
				var $campo = forms.diario_compras_conceptos_2.elements[elems[k]].getSelectedText()
				$html += '<TD> '+ $campo + '</TD>'
			}
		}
	}
	$html += '</TR></TABLE>'
	forms.diario_compras_conceptos_2.controller.setSelectedIndex(1)	
	return $html
}

/**
 * @properties={typeid:24,uuid:"316401FC-CE64-4C55-95FA-EF35E8201143"}
 */
function totales()
{
	var $texto = '<TABLE CELLPADDING="1" CELLSPACING="1" BORDER="0">'
	$texto += '<TR class="text"><TD><b>TOTALES</b></TD></TR>'
	$texto += '<TR class="text"><TD> Neto Gravado</TD><TD> '			+ utils.numberFormat(forms.diario_compras_conceptos_2.tNeto,'0.00') + '</TD></TR>'
	$texto += '<TR class="text"><TD> Exentos</TD><TD> '					+ utils.numberFormat(forms.diario_compras_conceptos_2.tExentos,'0.00')+ '</TD></TR>'
	$texto += '<TR class="text"><TD> Impestos Internos</TD><TD> '		+ utils.numberFormat(forms.diario_compras_conceptos_2.tImpInternos,'0.00')+ '</TD></TR>'
	$texto += '<TR class="text"><TD> IVA</TD><TD> ' 					+ utils.numberFormat(forms.diario_compras_conceptos_2.tIva,'0.00') + '</TD></TR>'
	$texto += '<TR class="text"><TD> Percepciones IVA </TD><TD> '		+ utils.numberFormat(forms.diario_compras_conceptos_2.tIvaPercep,'0.00') + '</TD></TR>'
	$texto += '<TR class="text"><TD> Percepciones IB</TD><TD> '			+ utils.numberFormat(forms.diario_compras_conceptos_2.tIbPercep,'0.00')+ '</TD></TR>'
	$texto += '<TR class="text"><TD> Percepciones Ganancias</TD><TD> '	+ utils.numberFormat(forms.diario_compras_conceptos_2.tGciasPercep,'0.00')+ '</TD></TR>'
	$texto += '<TR class="text"><TD> Otros</TD><TD> '					+ utils.numberFormat(forms.diario_compras_conceptos_2.tOtros,'0.00')+ '</TD></TR>'
	$texto += '<TR class="text"><TD> Total</TD><TD> '					+ utils.numberFormat(forms.diario_compras_conceptos_2.tTotal,'0.00')+ '</TD></TR>'

	return $texto
}

/**
 * @properties={typeid:24,uuid:"64BEBC7E-51C0-4B82-B59A-61049E15F6EC"}
 */
function csv() {
	globals.DIALOGS.showWarningDialog('Aviso','Por favor, utilice el exportar a XLS','OK')
}

/**
 * @param {JSDataSet} ds
 * 
 * @properties={typeid:24,uuid:"3A396437-93E9-4344-865A-7736844FE9B1"}
 */
function calcularTotales(ds) {
	
	var iNeto			= ds.getColumnNames().indexOf("neto_impresion",0) + 1
	var iExento			= ds.getColumnNames().indexOf("exentos",0) + 1
	var iImpInterno		= ds.getColumnNames().indexOf("impuestos_internos",0) + 1
	var iIva			= ds.getColumnNames().indexOf("iva_impresion",0) + 1
	var iIvaPercep		= ds.getColumnNames().indexOf("iva_percep",0) + 1
	var iIbPercep		= ds.getColumnNames().indexOf("ib_percep",0) + 1
	var iGciasPercep	= ds.getColumnNames().indexOf("ganancias_percep",0) + 1
	var iOtros			= ds.getColumnNames().indexOf("otros",0) + 1
	var iTotal			= ds.getColumnNames().indexOf("total",0) + 1
	
	var tNeto			= 0
	var tExento			= 0
	var tImpInterno		= 0
	var tIva			= 0
	var tIvaPercep		= 0
	var tIbPercep		= 0
	var tGciasPercep	= 0
	var tOtros			= 0
	var tTotal			= 0
	
	var $cant = ds.getMaxRowIndex()
	for (var i = 1 ; i <= $cant ; i++)
	{
		tNeto			+= ds.getValue(i,iNeto)
		tExento			+= ds.getValue(i,iExento)
		tImpInterno		+= ds.getValue(i,iImpInterno)
		tIva			+= ds.getValue(i,iIva)
		tIvaPercep		+= ds.getValue(i,iIvaPercep)
		tIbPercep		+= ds.getValue(i,iIbPercep)
		tGciasPercep	+= ds.getValue(i,iGciasPercep)
		tOtros			+= ds.getValue(i,iOtros)
		tTotal			+= ds.getValue(i,iTotal)
	}
	
	forms.diario_compras_conceptos_2.tNeto 			= tNeto
	forms.diario_compras_conceptos_2.tExentos 		= tExento
	forms.diario_compras_conceptos_2.tImpInternos	= tImpInterno	
	forms.diario_compras_conceptos_2.tIva			= tIva
	forms.diario_compras_conceptos_2.tIvaPercep		= tIvaPercep
	forms.diario_compras_conceptos_2.tIbPercep		= tIbPercep
	forms.diario_compras_conceptos_2.tGciasPercep	= tGciasPercep
	forms.diario_compras_conceptos_2.tOtros			= tOtros
	forms.diario_compras_conceptos_2.tTotal			= tTotal
}
